By mdestroy | September 23, 2020
Sur Linux, il existe plusieurs fonctionnalités servant à faciliter la gestion des comptes d’utilisateurs et leur sécurisation.
Dans cet article, j’essaierai d’évoquer les plus populaires (importants).
Les fonctionnalités que nous aborderons sont: les Quota, les permissions de fichier, le SGID, les ACLs, libpam_cracklib et les outils de gestion d’utilisateur chmod, chown, useradd, passwd, chage, groupadd.
Supposons donc que les tâches ci-dessous nous soient confiées:
2.Ci-dessous les propriétés des comptes d’utilisateurs à définir:
•.Les utilisateurs doivent impérativement changer leur mots de passe chaque trimestre,
•.Le nombre minimum de jours autorisés entre les modifications des mots de passe sera d’un jour,
•.Générer un mot de passe aléatoire pour chaque nouvel utilisateur pour leur première connexion,
•.Les utilisateurs seront forcés à modifier leurs mots de passe lors de leur première connexion,
•.Historique des mots de passe à 5.
•.Imposer la complexité des mots de passe. Les mots de passe devront contenir au moins une lettre majuscule, une lettre minuscule, un chiffre, un caractère spécial et doivent être longs de 8 lettres.
2.Créer un 4ème groupe partagé workers qui comprendra tous les employés. S’assurer que workers est le groupe primaire de tous les employés.
3.Monter les répertoires de travail /security, /development, /management respectivement dans les devices /dev/sda, /dev/sdb, /dev/sdc en utilisant la fonctionnalité Quota.
4.Régler un quota pour chaque utilisateur sur chaque répertoire de travail. 30000 inodes pour les utilisateurs du répertoire /security. 70000 inodes pour les utilisateurs du répertoire /development. 70000 inodes pour les utilisateurs du répertoire /management.
5.Chaque employé doit pouvoir lire/créer et accéder à tous les fichiers de son répertoire de travail.
6.Tout fichier créé doit avoir comme propriétaires son créateur et le groupe du créateur.
7.Les utilisateurs ne devraient pas pouvoir supprimer les fichiers des autres hormis leurs supérieurs hiérarchiques.
8.Le groupe development doit avoir un accès en lecture sur le répertoire /security.
9.Le groupe security doit avoir un accès en lecture sur le répertoire /development.
10.Le groupe management doit avoir un accès en lecture sur le répertoire /security.
11.Le groupe management doit avoir un accès en lecture sur le répertoire /development.
1.
Nous réaliserons ces tâches sur un système Ubuntu Bionic.
Sans plus tarder, commençons par la création des groupes d’utilisateurs à l’aide de la commande groupadd.
La syntaxe:
Avant de passer à la création des utilisateurs, il nous faudra configurer certains fichiers pour la définition de leurs propriétés par défaut.
Ainsi, nous devons modifier les directives PASS_MAX_DAYS et PASS_MAX_DAYS du fichier /etc/login.defs qui serviront respectivement à forcer les utilisateurs à modifier leurs mots de passe après un nombre défini de jours et à fixer le nombre de jour minimal entre les modifications de mot de passe.
Le package libpam_cracklib inclut un module PAM imposant la complexité des mots de passe.
Une fois installé, ce module éffectue une série de tests pour vérifier la force des mots de passe des utilisateurs. Le module cherche à savoir par exemple si le mot de passe utilisé est un palindrome, s’il est monotonique ou s’il contient un nom d’utilisateur. Je vous invite à lire cet article si vous souhaitez en savoir plus sur le package Libpam_cracklib
Libpam_cracklib peut être installé comme suit:
# apt-get install libpam_cracklib
Pour configurer la complexité des passwords sur notre système comme stipulé dans l’énoncé, il faudra modifier le fichier /etc/pam.d/common-password, en y ajoutant les directives minlen=8, ucredit=-1, lcredit=-1, dcredit=-1, ocredit=-1 à la ligne invoquant pam_cracklib.so.
Quant à la définition de l’historique des mots de passe, il faudra ajouter la directive remember 5 à la ligne invoquant le module pam_unix.so.
Nous sommes à présent sûrs que tous les futurs utilisateurs de ce système auront tous les mêmes propriétés de compte et de mots de passe.
A l’aide de useradd, créeons donc les utilisateurs de telle sorte qu’ils aient pour groupe principal workers, puis comme second groupe, leur groupe de travail.
La syntaxe:
# useradd -m user -g primary-group -G working-group
L’option m servant à créer un répertoire de base pour l’utilisateur, l’option g à configurer le groupe primaire et l’option G le groupe secondaire.
Les propriétés de l’un des comptes créés:
Le script ci-dessous nous permettra de créer des mots de passe forts des utilisateurs nouvellement créés et les sauvegarder dans un fichier accessible que par le compte root. Le mot de passe pourra ensuite être partagé aux utilisateurs de façon sécurisée.
La commande chage présente dans la dernière ligne du script forcera les utilisateurs à créer leur propre mot de passe à leur prochaine connexion.
#!/bin/bash
USERPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 8)
NAME=${1?Error: no name given}
echo "$1:$USERPASS" | chpasswd
echo "$1:$USERPASS">>passfile
chmod 700 passfile
chage -d 0 $1
L’exécution du script pour l’initialisation du mot de passe du compte anouk:
Quota est une fonctionnalité du kernel Linux servant à limiter l’espace disque un utilisateur ou un groupe peut utiliser. Quota sert également à limiter le nombre de fichiers (inodes) qu’un utilisateur ou un groupe peut créer sur une machine.
Installation de Quota:
# apt install quota -y
Après l’installation de Quota, montons dans fstab les devices dans des dossiers locaux à l’aide de leur identifiant unique universel (UUID) accessible via la commande blkid.
Une exécution de mount -a nous assure que nos dossiers sont montés comme il le faut avec les bonnes options.
La syntaxe ci-dessous permet d’activer l’utilisation de Quota sur les utilisateurs et groupes d’utilisateurs.
# quotacheck -cugm /mounted-folder
# quotaon -v /mounted-folder
# edquota -u user
La capture suivante montre que l’utilisateur linda pourra créer au maximum 30000 fichiers sur le système de fichier /dev/sda monté dans le dossier /security.
Celle-ci montre que l’utilisateur anouk pourra créer tout au plus 70000 fichiers sur le système de fichier /dev/sdb monté dans le dossier /development.
Enfin, cette dernière montre que l’utilisateur raul pourra créer 70000 fichiers maxi sur le système de fichier /dev/sdc monté dans le dossier /management.
A l’aide de chown, nous pouvons attribuer la possession des dossiers aux chefs d’équipe (et à leur groupe) de telle sorte qu’ils soient les seuls à avoir un contrôle sur tous les fichiers créés dans leurs dossiers respectifs.
La syntaxe:
# chown user:group folder
# chmod 2770 groupname
Les ACL (Access Control List) fournissent un mécanisme de permissions plus flexible aux systèmes de fichiers. A la différence des permissions Linux qui fournissent une permission générale sur les dossiers et fichiers, les ACL permettent de configurer des permissions spécifiques d’un utilisateur (groupe d’utilisateurs) sur n’importe quelle ressource.
Nous utiliserons la syntaxe ci-dessous pour configurer la liste d’accès sur chaqun des dossiers.
# setfacl -m g:group:rx /folder
La syntaxe ci-dessous nous servira à configurer une liste d’accès par défaut sur les dossiers.
# setfacl -m d:g:group:rx /folder
Ainsi prend fin cet article. J’espère qu’il ne vous a pas paru trop long (^^) et que vous aurez appris de nouvelles choses. :-).